home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS11.ADF / C / DirUtil / pwd.c < prev    next >
C/C++ Source or Header  |  1986-08-05  |  2KB  |  102 lines

  1.  
  2. #include <exec/types.h>
  3. #include <exec/nodes.h>
  4. #include <exec/lists.h>
  5. #include <exec/ports.h>
  6. #include <exec/devices.h>
  7. #include <exec/exec.h>
  8. #include <intuition/intuition.h>
  9. #include <intuition/intuitionbase.h>
  10. #include <graphics/gfxbase.h>
  11. #include <graphics/gfx.h>
  12. #include <graphics/text.h>
  13. #include <graphics/regions.h>
  14. #include <graphics/copper.h>
  15. #include <graphics/gels.h>
  16. #include <graphics/clip.h>
  17. #include <graphics/view.h>
  18. #include <graphics/rastport.h>
  19. #include <graphics/layers.h>
  20. #include <devices/serial.h>
  21. #include <devices/keymap.h>
  22. #include <hardware/blit.h>
  23. #include <stdio.h>
  24. #include <ctype.h>
  25. #include <libraries/dos.h>
  26. #include <libraries/dosextens.h>
  27.  
  28. extern APTR AllocMem();
  29.  
  30. unsigned int mask = 0;
  31. #define INTUITION 0x00000001
  32. #define GRAPHICS  0x00000002
  33. #define SCREEN    0x00000004
  34. #define WINDOW    0x00000008
  35. #define COLORMAP  0x00000010
  36. #define MATH      0x00000020
  37. #define MATHTRANS 0x00000040
  38.  
  39. #define FBSIZE (sizeof (struct FileInfoBlock))
  40.  
  41. struct IntuitionBase *IntuitionBase;
  42. struct GfxBase *GfxBase;
  43. struct IntuiMessage *message;
  44. struct RastPort *rp;
  45. struct Window *w;
  46.  
  47. #define MAXFNAME 15
  48. #define MAXCHAR 30
  49.  
  50. char *pwd()
  51. {
  52. struct FileLock *fl1;
  53. struct FileLock *fl2;
  54. struct FileInfoBlock *fb;
  55.  
  56. static char dir[300];
  57. char tmpdir[300];
  58.  
  59.     *dir = 0;
  60. *tmpdir = 0;
  61.  
  62. /* Mallocate memory for the file info block */
  63. fb = AllocMem(FBSIZE,MEMF_CLEAR | MEMF_PUBLIC);
  64.  
  65.     fl2 = Lock(":",ACCESS_READ);
  66.  
  67. fl1 = CurrentDir(fl2);
  68.  
  69. CurrentDir(fl1);
  70.  
  71. /* If the root directory is not the main lock then close it */
  72. if (fl2 != NULL)
  73.     UnLock(fl2);
  74.  
  75. for (;;)
  76. {
  77.     if (!Examine(fl1,fb))
  78. {
  79. FreeMem(fb,FBSIZE);
  80. close_things();
  81. exit();
  82. }
  83.  
  84. /* Get the parent lock if there is one */
  85. fl2 = ParentDir(fl1);
  86.  
  87. /* If this is the end then break out of the loop */
  88. if (!fl2)
  89.     break;
  90.  
  91. sprintf(dir,"/%s%s",fb->fib_FileName,tmpdir);
  92. strcpy(tmpdir,dir);
  93.  
  94. fl1 = fl2;
  95. }
  96.  
  97. *dir = ':';
  98.  
  99. FreeMem(fb,FBSIZE);
  100.  
  101.     return (dir);
  102. }